home *** CD-ROM | disk | FTP | other *** search
/ Champak 29 / Volume 29 - JOGO DISK .iso / Games / jungle_adventure.swf / scripts / __Packages / SSLevel.as < prev    next >
Encoding:
Text File  |  2006-11-29  |  6.8 KB  |  255 lines

  1. class SSLevel
  2. {
  3.    var worldConstructor;
  4.    var objects;
  5.    var name;
  6.    var preProcess;
  7.    var background;
  8.    var music;
  9.    var processID;
  10.    var onReadXMLComplete;
  11.    var lastTime;
  12.    var intervalID;
  13.    var onComplete;
  14.    var startNode = "Start";
  15.    var startX = 0;
  16.    var startY = 0;
  17.    var levelLeft = 0;
  18.    var levelRight = 0;
  19.    var levelTop = 0;
  20.    var levelBottom = 0;
  21.    var current = 0;
  22.    var total = 0;
  23.    var pauseTime = 20;
  24.    var ready = false;
  25.    var editor_docObject = true;
  26.    var editor_args_names = ["levelName","preProcess","background","startNode","music"];
  27.    var editor_args_values = ["name","preProcess","background","Start","music"];
  28.    var editor_args_types = ["string","string","string","string","string"];
  29.    var editor_args_options = ["A-Za-z0-9","A-Za-z","A-Za-z0-9","A-Za-z0-9","A-Za-z0-9"];
  30.    var editor_args_descriptions = [];
  31.    var editor_args_mode = [0,0,0,0,0];
  32.    var editor_args_component = ["TextInput","TextInput","TextInput","TextInput","TextInput"];
  33.    var editor_commands = [];
  34.    function SSLevel(x)
  35.    {
  36.       this.worldConstructor = GameWorld;
  37.       this.objects = [];
  38.       switch(typeof x)
  39.       {
  40.          case "string":
  41.             this.name = x;
  42.             break;
  43.          case "object":
  44.             this.readXML(x);
  45.       }
  46.    }
  47.    function addObject()
  48.    {
  49.       this.objects.push(arguments);
  50.    }
  51.    function readXML(xObj)
  52.    {
  53.       this.ready = false;
  54.       var wn = xObj.firstChild;
  55.       var attr = wn.attributes;
  56.       this.name = attr.levelName;
  57.       this.preProcess = eval(attr.preProcess);
  58.       this.background = _global[attr.background];
  59.       this.startNode = attr.startNode;
  60.       this.music = attr.music;
  61.       var a;
  62.       var i = -1;
  63.       var c = a = wn.childNodes.length;
  64.       while(++i < c)
  65.       {
  66.          if(a[i].nodeName === "objects")
  67.          {
  68.             this.readObjects(wn.firstChild);
  69.          }
  70.       }
  71.       this.readXMLComplete();
  72.    }
  73.    function readObjects(node)
  74.    {
  75.       var types = node.attributes.types.split(",");
  76.       var objData = node.firstChild.nodeValue;
  77.       var i = types.length;
  78.       while(--i > -1)
  79.       {
  80.          types[i] = eval(types[i]);
  81.       }
  82.       var aObjs = objData.split(SSGlobal.ED_OBJ_DELIMETER);
  83.       var objAttrDelim = SSGlobal.ED_OBJ_ATTR_DELIM;
  84.       var i = -1;
  85.       var c = aObjs.length;
  86.       while(++i < c)
  87.       {
  88.          var a = aObjs[i].split(objAttrDelim);
  89.          var j = a.length;
  90.          a[0] = types[a[0]];
  91.          while(--j)
  92.          {
  93.             var v = a[j];
  94.             if(v == "")
  95.             {
  96.                a[j] = null;
  97.             }
  98.             else
  99.             {
  100.                var char = v.charAt(0);
  101.                if(char == "\"" || char == "\'")
  102.                {
  103.                   a[j] = v.substring(1,v.length - 1);
  104.                }
  105.                else
  106.                {
  107.                   v = Number(v);
  108.                   if(isNaN(v))
  109.                   {
  110.                      var tmp = eval(a[j]);
  111.                      if(tmp != null)
  112.                      {
  113.                         a[j] = tmp;
  114.                      }
  115.                   }
  116.                   else
  117.                   {
  118.                      a[j] = v;
  119.                   }
  120.                }
  121.             }
  122.          }
  123.          this.addObject.apply(this,a);
  124.       }
  125.    }
  126.    function readXMLStep()
  127.    {
  128.    }
  129.    function readXMLComplete()
  130.    {
  131.       clearInterval(this.processID);
  132.       delete this.processID;
  133.       this.ready = true;
  134.       this.onReadXMLComplete();
  135.    }
  136.    function build(base)
  137.    {
  138.       this.ready = false;
  139.       var _loc4_ = new this.worldConstructor(this.name);
  140.       _loc4_.name = this.name;
  141.       base.addWorld(_loc4_);
  142.       this.levelLeft = this.levelTop = 268435455;
  143.       this.levelRight = this.levelBottom = -268435455;
  144.       this.preProcess(base,_loc4_);
  145.       if(typeof this.background == "function")
  146.       {
  147.          this.background(_loc4_);
  148.       }
  149.       else
  150.       {
  151.          var _loc3_ = this.background.layers.length;
  152.          while((_loc3_ = _loc3_ - 1) > -1)
  153.          {
  154.             var _loc2_ = {};
  155.             _loc2_.__proto__ = this.background.layers[_loc3_];
  156.             _loc4_.addBackground(_loc2_);
  157.          }
  158.       }
  159.       this.processObjects(base,_loc4_);
  160.       return _loc4_;
  161.    }
  162.    function processObjects(base, ssw)
  163.    {
  164.       this.lastTime = getTimer();
  165.       this.current = -1;
  166.       this.total = this.objects.length;
  167.       this.intervalID = setInterval(function(o, base, ssw)
  168.       {
  169.          o.objectsStep(base,ssw);
  170.       }
  171.       ,0,this,base,ssw);
  172.    }
  173.    function objectsStep(base, ssw)
  174.    {
  175.       var _loc4_ = Math.abs(getTimer() - (this.lastTime = getTimer()));
  176.       while(++this.current < this.total)
  177.       {
  178.          var _loc2_ = this.objects[this.current];
  179.          this.processObject(ssw,_loc2_);
  180.       }
  181.       if(this.current == this.total)
  182.       {
  183.          this.complete(base,ssw);
  184.          clearInterval(this.intervalID);
  185.       }
  186.       updateAfterEvent();
  187.    }
  188.    function processObject(ssw, aData)
  189.    {
  190.       var _loc12_ = aData[1];
  191.       var _loc11_ = aData[2];
  192.       var _loc10_ = aData[3];
  193.       var _loc4_ = aData[0];
  194.       var _loc5_ = aData[4];
  195.       var _loc7_ = aData[5] != null ? Number(aData[5]) : _loc4_.prototype.depthLayer;
  196.       var _loc8_ = aData[6] != null ? aData[6] : null;
  197.       var _loc6_ = !(aData[7] == null || aData[7] == "") ? aData[7] : null;
  198.       var _loc9_ = aData.slice(10);
  199.       if(_loc4_ == null)
  200.       {
  201.          return false;
  202.       }
  203.       var _loc2_ = {};
  204.       _loc2_.__proto__ = _loc4_.prototype;
  205.       if(_loc4_ == SSShapeInstance)
  206.       {
  207.          _loc4_.call(_loc2_,ssw.shapes[_loc9_[0]]);
  208.       }
  209.       else
  210.       {
  211.          _loc4_.apply(_loc2_,_loc9_);
  212.       }
  213.       _loc2_.x = _loc12_;
  214.       _loc2_.y = _loc11_;
  215.       _loc2_.z = _loc10_;
  216.       if(_loc5_ != "" && _loc5_ != null)
  217.       {
  218.          _loc2_.assetID = _loc5_;
  219.       }
  220.       if(_loc7_ != _loc2_.depthLayer)
  221.       {
  222.          _loc2_.depthLayer = Number(_loc7_);
  223.       }
  224.       if(_loc8_ != null)
  225.       {
  226.          _loc2_.frame = _loc8_;
  227.       }
  228.       if(_loc6_ != null)
  229.       {
  230.          _loc2_.name = _loc6_;
  231.       }
  232.       ssw.addObject(_loc2_);
  233.       this.levelLeft = Math.min(this.levelLeft,_loc2_.left);
  234.       this.levelTop = Math.min(this.levelTop,_loc2_.top);
  235.       this.levelRight = Math.max(this.levelRight,_loc2_.right);
  236.       this.levelBottom = Math.max(this.levelBottom,_loc2_.bottom);
  237.    }
  238.    function complete(base, ssw)
  239.    {
  240.       this.ready = true;
  241.       ssw.levelLeft = this.levelLeft;
  242.       ssw.levelTop = this.levelTop;
  243.       ssw.levelRight = this.levelRight;
  244.       ssw.levelBottom = this.levelBottom;
  245.       this.onComplete(base,ssw);
  246.    }
  247.    function onStatus()
  248.    {
  249.    }
  250.    function toString()
  251.    {
  252.       return "SSLevel " + this.name;
  253.    }
  254. }
  255.